home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / PowerMacOberon 1.2 / Text / EditKeys.Text (.txt) < prev    next >
Oberon Text  |  1995-06-07  |  15KB  |  277 lines

  1. Syntax10.Scn.Fnt
  2. Syntax12i.Scn.Fnt
  3. Syntax10i.Scn.Fnt
  4. ParcElems
  5. Alloc
  6. Syntax12.Scn.Fnt
  7. Math12.Scn.Fnt
  8. FoldElems
  9. StampElems
  10. Alloc
  11. 7 Jun 95
  12. StyleElems
  13. Alloc
  14. paragraph
  15. paragraph2
  16. new page
  17. title
  18. abstract
  19. table
  20. algorithm
  21. program
  22. LogHead
  23. LineElems
  24. Alloc
  25. 7 Jun 95
  26. Syntax10b.Scn.Fnt
  27.     Automatic.Do
  28.         EditKeys.Reset ~
  29.         EditKeys.Read EditKeys.Text ~
  30. (* Search for any of the following: programming mail Internal External Documentation *)
  31. (*set hot_key *)
  32.     \ #5
  33. (*built-in functions*)
  34.     (*taking a parameter*)
  35.     write (^0)    char (^1)    font (^2)    off (^3)    call (^4)    arg (^A)    exec (^B)    param (^C)
  36.     (*no parameter*)
  37.     keep (^5)    pick (^6)    caret (^7)    indent (^8)    freeze (^9)
  38. (*abreviations for built-in function calls*)
  39.     arg0 ("0" arg)    arg1 ("1" arg)    arg2 ("2" arg)    arg3 ("4" arg)
  40.     kwrite (keep write)    pwrite (pick write)
  41. (*some font preset macros*)
  42.     n ("Syntax10.Scn.Fnt" font)    i ("Syntax10i.Scn.Fnt" font)
  43.     m ("Syntax10m.Scn.Fnt" font)     b ("Syntax10b.Scn.Fnt" font)
  44.     n2 ("Syntax12.Scn.Fnt" font)    i2 ("Syntax12i.Scn.Fnt" font)
  45.     m2 ("Syntax12m.Scn.Fnt" font)    b2 ("Syntax12b.Scn.Fnt" font)
  46.     n4 ("Syntax14.Scn.Fnt" font)    i4 ("Syntax14i.Scn.Fnt" font)
  47.     m4 ("Syntax14m.Scn.Fnt" font)    b4 ("Syntax14b.Scn.Fnt" font)
  48.     mono ("Courier10.Scn.Fnt" font)    mono2 ("Courier12.Scn.Fnt" font)
  49.     bold ("KeyCmds.Bold" call)
  50. (*some template macros for special characters*)
  51.     | ("\" write)    (*enable entry of hotkey character*)
  52.     tab ("9" char)    cr ("13" char)    qt ("34" char)    sp (" " write)
  53.     = (cr indent)    ` (= tab)    del ("127" char)    lf ("10" char)
  54.     a` ("
  55. " pwrite)    a' ("
  56. " pwrite)    a^ ("
  57. " pwrite)    a" ("
  58. " pwrite)    A" ("
  59. " pwrite)
  60.     e` ("
  61. " pwrite)    e' ("
  62. " pwrite)    e^ ("
  63. " pwrite)    e" ("
  64. " pwrite)
  65.     i` ("
  66. " pwrite)    i' ("i'" pwrite)    i^ ("
  67. " pwrite)    i" ("
  68. " pwrite)
  69.     o` ("
  70. " pwrite)    o' ("o'" pwrite)    o^ ("
  71. " pwrite)    o" ("
  72. " pwrite)    O" ("
  73. " pwrite)
  74.     u` ("
  75. " pwrite)    u' ("u'" pwrite)    u^ ("
  76. " pwrite)    u" ("
  77. " pwrite)    U" ("
  78. " pwrite)
  79.     c, ("
  80. " pwrite)    n~ ("
  81. " pwrite)
  82.     alpha ("a" kwrite)    beta ("b" kwrite)    gamma ("g" kwrite)
  83.     delta ("d" kwrite)    epsilon ("e" kwrite)    zeta ("z" kwrite)
  84.     eta ("h" kwrite)    theta ("q" kwrite)    iota ("i" kwrite)
  85.     kappa ("k" kwrite)    lambda ("l" kwrite)    mu ("m" kwrite)
  86.     nu ("n" kwrite)    xi ("x" kwrite)    omikron ("o" kwrite)
  87.     pi ("p" kwrite)    rho ("r" kwrite)    sigma ("s" kwrite)
  88.     tau ("t" kwrite)    ypsilon ("u" kwrite)    phi ("j" kwrite)
  89.     chi ("c" kwrite)    psi ("y" kwrite)    omega ("w" kwrite)
  90.     leq ("#" kwrite)    geq ("3" kwrite)    neq ("9" kwrite)
  91.     approx (";" kwrite)    about ("p" kwrite)
  92.     begc ("h" kwrite)    endc ("i" kwrite)    begf ("j" kwrite)    endf ("k" kwrite)
  93.     empty ("F" kwrite)    reals ("!" kwrite)    nats ("
  94. " kwrite)
  95.     elem ("N" kwrite)    notelem ("O" kwrite)
  96.     subset ("M" kwrite)    truesubset ("L" kwrite)
  97.     dot ("7" kwrite)    cart ("4" kwrite)    power ("C" kwrite)
  98.     union ("H" kwrite)    sect ("G" kwrite)
  99.     not ("X" kwrite)    and ("Y" kwrite)    or ("Z" kwrite)    xor ("E" kwrite)
  100.     impl ("^" kwrite)    equiv (":" kwrite)
  101.     arrow ("." kwrite)    tarrow ("
  102. " kwrite)
  103.     beg ("
  104. " kwrite)    box ("
  105. " kwrite)    end ("
  106. " kwrite)
  107.     all ("R" kwrite)    ex ("S" kwrite)    qed ("U" kwrite)
  108.     forall ("(" write all sp caret sp ")" write)    exists ("(" write ex sp caret sp ")" write)
  109. (*some vertical offset preset macros*)
  110.     sup ("16" off)    sub ("-16" off)    norm ("0" off)
  111.     [ (sup n)    ] (sub n)    / (norm n2)
  112. (*some macros calling Oberon commands*)
  113.     tool ("System.Open" arg0 param call)
  114.     d ("StampElems.Insert" call)
  115.     id ("StampElems.Insert" call)
  116.     Cn ("EditTools.ChangeStyle ? => ." call)
  117.     Ci ("EditTools.ChangeStyle ? => i" call)
  118.     Cb ("EditTools.ChangeStyle ? => b" call)
  119.     Cm ("EditTools.ChangeStyle ? => m" call)
  120.     C ("EditTools.ChangeSize ? => 10" call)
  121.     C2 ("EditTools.ChangeSize ? => 12" call)
  122.     C4 ("EditTools.ChangeSize ? => 14" call)
  123.     C6 ("EditTools.ChangeSize ? => 16" call)
  124.     inc2 ("EditTools.IncSize 2" call)
  125.     dec2 ("EditTools.IncSize -2" call)
  126.     , ("Edit.Recall" call)
  127. (*some macros to support various text elements*)
  128.     parc ("Edit.InsertParc @" call)    style ("StyleElems.Insert" arg0 param call)
  129.     fold ("
  130. " pwrite caret "
  131. " write)    ind ("IndentElems.Insert" call)
  132.     graph ("GraphicElems.Insert" call)    pict ("PictElems.Insert Grapes.Pict" call)
  133.     dialog ("DialogElems.Insert" call)    mark ("MarkElems.Insert" call)
  134.     link ("LinkElems.Insert" call)    balloon ("BalloonElems.Insert" call)
  135.     table ("TableElems.Insert" call)    kepler ("KeplerElems.Insert" call)
  136.     clock ("ClockElems.Insert" call)    pop ("PopupElems.Insert" arg0 param call)
  137.     man ("IconElems.Insert" call)    stamp ("StampElems.Insert" call)
  138.     troup (man man man man man man man man man)
  139.     army (troup troup troup troup troup troup troup troup troup)
  140.     line ("LineElems.Insert auto 1" call)    line2 ("LineElems.Insert auto 2" call)
  141.     line4 ("LineElems.Insert auto 4" call)    line6 ("LineElems.Insert auto 6" call)
  142.     dline ("LineElems.Insert auto 1 double" call)    dline2 ("LineElems.Insert auto 2 double" call)
  143.     dline4 ("LineElems.Insert auto 4 double" call)    dline6 ("LineElems.Insert auto 6 double" call)
  144.     tline ("LineElems.Insert tab 1" call)    tline2 ("LineElems.Insert tab 2" call)
  145.     tline4 ("LineElems.Insert tab 4" call)    tline6 ("LineElems.Insert tab 6" call)
  146.     fline ("LineElems.Insert 1" arg0 param call)    fline2 ("LineElems.Insert 2" arg0 param call)
  147.     fline4 ("LineElems.Insert 4" arg0 param call)    fline6 ("LineElems.Insert 6" arg0 param call)
  148.     day ("
  149. " write)
  150.     ctab ("TabElems.Insert 1200" call)
  151. (*style element macros*)
  152.     para ("
  153. " write)
  154.     para2 ("
  155. "write)
  156.     newpage ("
  157. " write)
  158.     title ("
  159. " write)
  160.     abstract ("
  161. " write)
  162.     tablepara ("
  163. " write)
  164.     algorithm ("
  165. " write)
  166.     program ("
  167. " write)
  168.     loghead ("
  169. id1" write caret  ": " write)
  170. (*some template macros for programming purposes*)
  171.     #40 ("    (* " write caret " *) " write)    (* '(' *)
  172.     #41 ("    (** " write caret " **) " write)    (* ')' *)
  173.     < (tab "(*<< " write caret " *) " write)
  174.     << (tab "(*<<*) " write)
  175.     header ("    (** " write caret " **) 
  176. " write cr cr)
  177.     M ("MODULE " write arg0 write ";    (** your initials here id1" write caret " / 
  178.     IMPORT Texts, Oberon;
  179.     CONST 
  180.     TYPE 
  181.     VAR 
  182.     PROCEDURE Do*;
  183.     BEGIN
  184.     END Do;
  185. END " write arg0 write "." write cr cr arg0 write ".Do" write cr)
  186.     P ("PROCEDURE " write arg0 write caret ";" write =
  187.         "    VAR" write =
  188.         "BEGIN" write `
  189.         "END " write arg0 write ";" write)
  190.     P* ("PROCEDURE " write arg0 write "*" write caret ";" write tab "(**  **) " write =
  191.         "    VAR" write =
  192.         "BEGIN" write `
  193.         "END " write arg0 write ";" write)
  194.     R (arg0 write " = POINTER TO " pwrite arg0 write "Desc;" pwrite =
  195.         arg0 write "Desc = RECORD" pwrite caret =
  196.         "END;" pwrite cr)
  197.     WHILE ("WHILE " write caret " DO" write cr tab cr del "END;" write)
  198.     REPEAT ("REPEAT " write caret cr "UNTIL ;" write)
  199.     CASE ("CASE " write caret " OF" write cr "END;" write)
  200.     LOOP ("LOOP " write lf tab lf del "END;" write)
  201.     min ("PROCEDURE Min(x, y: INTEGER): INTEGER;
  202.     BEGIN IF x < y THEN RETURN x ELSE RETURN y END
  203.     END Min;
  204.     " write)
  205.     max ("PROCEDURE Max(x, y: INTEGER): INTEGER;
  206.     BEGIN IF x > y THEN RETURN x ELSE RETURN y END
  207.     END Max;
  208.     " write)
  209.     int ("INTEGER;" pwrite)    lint ("LONGINT;" pwrite)    boo ("BOOLEAN;" pwrite)    ptr ("= POINTER TO " pwrite)
  210.     arr ("ARRAY " pwrite caret " OF ;" pwrite)
  211.     ret ("RETURN " write)    RETURN ("RETURN" write)
  212.     exit ("EXIT " write)    EXIT ("EXIT" write)
  213.     halt ("HALT(" write caret ")" write)    HALT ("HALT" write)
  214.     assert ("ASSERT(" write caret ")" write)    ASSERT ("ASSERT" write)
  215.      ls ("Log.Str(" pwrite qt caret qt "); " pwrite)    li ("Log.Int(" pwrite caret "); " pwrite)    ll ("Log.Ln; " pwrite)
  216.     *  (freeze bold)    -  (freeze bold)
  217. (* shortcuts *)
  218.     => (arg0 write " => " write caret arg0 write)
  219.     -> (=>) > (=>)
  220.     decode ("Decode.Obj " write caret ".obj" write)
  221.     adecode ("Decode.Obj " write arg0 write ".obj" write)
  222.     code ("AsciiCoder.CodeFiles % " write caret "~" write)
  223.     acode ("AsciiCoder.CodeFiles % " write arg0 write " " write caret "~" write)
  224.     ren ("System.RenameFiles " write caret "~" write)    rename (ren)
  225.     aren ("System.RenameFiles " write arg0 write " => " write caret arg0 write " ~" write)    arename (aren)
  226.     delete ("System.DeleteFiles " write caret "~" write)
  227.     adelete ("System.DeleteFiles " write arg0 write " " write caret "~" write)
  228.     copy ("System.CopyFiles " write caret "~" write)
  229.     acopy ("System.CopyFiles " write arg0 write " => " write caret arg0 write " ~" write)
  230.     real ("Calc.Reset" call cr "Calc.Real " write caret)
  231.     dec ("Calc.Reset" call cr "Calc.Dec " write caret)
  232. (*default macro taken when no match found*)
  233. (*    OTHERWISE ("\" pwrite)*)
  234. (*install macro executed after initially loading EditKeys*)
  235.     INSTALL ()
  236. EditKeys 3.0 Documentation    cas  9 May 92 / mh 19 Apr 94 / MK 1 Jun 95
  237. EditKeys.Install    installs EditKeys => all viewers with a handler element in the menu frame have now macro facility
  238. "Copy Out Tool" for using EditKeys.
  239. EditKeys.Definitions 
  240. EditKeys.Read EditKeys.Text ~
  241. EditKeys.Reset
  242. EditKeys.GetKeyCode
  243. EditKeys.Definitions opens a viewer and lists all current macro definitions. A selection or a command parameter can be used to restrict the list to definitions with a certain prefix. EditKeys.Read takes a list of files and reads in macro definitions contained therein. If errors are detected, all definitions are deleted. For prototyping macros, it is also possible to have "@" or ":=" as an argument for EditKeys.Read, where @ causes the current selection to be read in, while := takes the text following. (Warning: in both cases the text is parsed to its end.)
  244. Upon module load time, the standard macro definition file "EditKeys.Text" is read in. Also, if a macro "INSTALL" is defined, it is invoked. EditKeys.Reset deletes all current macro definitions, resetting the hotkey to its default.
  245. EditKeys.GetKeyCode helps to find out the codes of certain keys. Within a text supporting macro keys, entering the hot key causes expansion of the macro entered to the left. To avoid ambiguouties, the longest matching macro name is taken. A macro may have zero or more arguments supplied by the user. If no corresponding definition of a macro is found, a second try is made with the standard macro name "OTHERWISE". (EditKeys.Reset defines "OTHERWISE" to write the default hotkey, i.e. "\".)
  246. Syntax of macro definition files for EditKeys.
  247.     MacroFile = [HotKeyDef] {MacroDef}.
  248.     HotKeyDef = '\' KeyName.    -- sets the macro expansion hot key (default is \)
  249.     MacroDef = MacroName '(' { MacroName | TextStretch | Command} ')'.
  250.     MacroName = KeyName
  251.         |   <graphic character except '#"()\^'>  { <graphic character except '()'>  }.
  252.     TextStretch = '"' <formatted text, not containing '"'> '"'.
  253.     KeyName = '#' <hex number>.
  254.     (Comments and arbitrary white space are allowed between any two terminals. Comments may be nested.)
  255. Syntax of macro invocations.
  256.     MacroInvocation = {Argument ":"} MacroName.
  257.     Argument = { <arbitrary graphic character except : and " > } | TextStretch.
  258. Built-in functions.
  259.     Text stretches are pushed on a parameter stack when processed.
  260.     Built-in functions may pop parameter(s) from that stack.
  261.     ^0    pops a parameter and causes textual insertion.
  262.     ^1    pops a parameter and inserts the corresponding ascii character.
  263.     ^2    pops a parameter which must be a font name; presets the named font.
  264.     ^3    pops a parameter which must be an integer; presets the vertical offset (in 1/64th of font height).
  265.     ^4    pops a parameter and tries to call it as an Oberon command.
  266.     ^A    pops a parameter which must be an integer; pushs the nth (0 is leftmost one) macro argument
  267.     ^B    pops a parameter which must be a macro name; invokes the named macro
  268.     ^C    pops a parameter and appends it to the parameters used when calling an Oberon command
  269.     ^5    keeps the font that would have been used w/o macro; presets this font.
  270.     ^6    picks the font that would have been used w/o macro; forces whole macro to this font.
  271.     ^7    presets the caret position.
  272.     ^8    indents the next line according to the last line's indentation.
  273.     ^9    avoids deletion of the macro, neither inserts characters written by the macro.
  274. Remarks.
  275.     When reading in a macro that has been read in before, the new definition replaces the old one.
  276.     Cyclic definitions can be constructed this way; a try to process such a definition is prevented.
  277.